package com.bestcem.xm.common.core.constant;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * 正则表达式
 * 最后更新时间: 2021年6月4日15:05:55
 *
 * @author gy.liu
 * @version 1.0
 * @date 2021/5/8 10:48
 **/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class RegTypes {
    /**
     * 项目名称
     */
    public static final String NAME = "^((?![\\\\/?:\"<>｜*|]+).)*";

    /**
     * 标题
     */
    public static final String TITLE = "^((?![/:*\"<>|?\\\\]+).)*";

    /**
     * mongo ObjectId
     */
    public static final String OBJECT_ID = "[a-fA-F0-9]{24}";

    /**
     * 32位16进制签名
     */
    public static final String SIGNATURE = "[a-fA-F0-9]{32}";

    /**
     * nullable mongo ObjectId
     */
    public static final String NULLABLE_OBJECT_ID = "{0}|[a-fA-F0-9]{24}";

    /**
     * 中文
     */
    public static final String CH = "[^\\u0000-\\u00FF]*";

    /**
     * 文本
     */
    public static final String TEXT = "([^\\u0000-\\u00FF]*)|([a-zA-Z0-9￥ “”‘’【】，；。？、！]*)";

    /**
     * 点
     */
    public static final String DOT = "\\.";

    /**
     * 数字
     */
    public static final String NUMBER = "^[-]?[0-9]+(\\.[0-9]+){0,1}$";

    /**
     * 字符串纯数字
     */
    public static final String ALL_NUMBER = "^[0-9]+$";

    /**
     * 兑奖码（英文字母和数字组合）
     */
    public static final String AWARD_CODE = "^[0-9a-zA-Z]*$";

    /**
     * 8位手机号
     */
    public static final String PHONE = "^(1[3-9][0-9])[0-9]{8}$";

    /**
     * 用户中心：个人中心 姓名、账号名正则
     */
    public static final String USER_NAME = "^[\\S]{0,60}$";

    /**
     * 组织名称 ：中英文、下划线、中线
     */
    public static final String GROUP_NAME = "^[\\u4e00-\\u9fa50-9A-Za-z-_]{0,30}$";

    /**
     * 组织编码: 包含英文、数字、下划线、中线
     */
    public static final String GROUP_CODE = "^[0-9a-zA-Z-_]{0,30}$";

    /**
     * 层级名称: 包含中英文、数字、下划线、中线
     */
    public static final String GROUP_LEVEL_NAME = "^[\\u4e00-\\u9fa50-9A-Za-z-_]{0,30}$";

    /**
     * Auto_开头的组织编码
     */
    public static final String AUTO_CODE = "^Auto_[0-9]{13,25}$";

    /**
     * 手机号
     */
    public static final String MOBILE = "^(1[3-9][0-9])[0-9]{8}$";

    /**
     * 登录密码  要求至少包含字母(大小写)、数字和特殊字符中的三种重的两种，大于8位
     */
    public static final String USER_PASSWORD1 = "^[a-zA-Z0-9]{8,16}";
    public static final String USER_PASSWORD2 = "^[a-zA-Z\\!\\@\\#\\$\\%\\^\\&\\*\\_\\.\\,\\?\\>\\<\\;\\[\\]\\{\\}\\(\\)\\-\\=\\+]{8,16}";
    public static final String USER_PASSWORD3 = "^[0-9\\!\\@\\#\\$\\%\\^\\&\\*\\_\\.\\,\\?\\>\\<\\;\\[\\]\\{\\}\\(\\)\\-\\=\\+]{8,16}";

    /**
     * ipv4
     */
    public static final String IPV4 = "^[0-9]{1,3}(\\.[0-9]{1,3}){3}";

    /**
     * 登录密码
     */
    public static final String PASSWORD = "^[a-zA-Z0-9\\!\\@\\#\\$\\%\\^\\&\\*\\_\\.\\,\\?\\>\\<\\;\\[\\]\\{\\}\\(\\)\\-\\=\\+]{8,16}";

    /**
     * 公司编码-只能包含英文小写、数据、中划线
     */
    public static final String ORG_CODE = "^[0-9a-z-]{2,32}$";
}

